package com.hifar.test.test.mapper;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hifar.test.entrust.pojo.HfEnvEntrust;
import com.hifar.test.entrust.pojo.HfEnvGkEntrust;
import com.hifar.test.report.render.model.HfEnvTaskTestModel;
import com.hifar.test.task.pojo.VO.EquipTestInfoVO;
import com.hifar.test.task.pojo.VO.HfEnvTaskTestVO;
import com.hifar.test.test.pojo.HfEnvTest;
import com.hifar.test.test.pojo.VO.HfEnvEntrustTestVO;
import com.hifar.test.test.pojo.VO.HfEnvTestExportVO;
import com.hifar.test.test.pojo.VO.HfEnvTestVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.ArrayList;
import java.util.List;

/**
 * 试验
 */
@Mapper
public interface HfEnvTestMapper extends BaseMapper<HfEnvTest> {

    /**
     * 试验VO查询
     *
     * @param page
     * @param queryWrapper
     * @return
     */
    Page<HfEnvTestVO> pageVO(Page<HfEnvTestVO> page
            , @Param(Constants.WRAPPER) QueryWrapper<HfEnvTestVO> queryWrapper);

    /**
     * 查询试验信息
     *
     * @param queryWrapper
     * @return
     */
    List<EquipTestInfoVO> selectTestInfo(@Param(Constants.WRAPPER) QueryWrapper<HfEnvTest> queryWrapper);

    /**
     * 查询试验下委托信息
     *
     * @param testId 试验id
     * @return
     */
    List<HfEnvEntrust> selectEntrustByTestId(@Param("id") String testId);

    /**
     * 查询委托下试验信息
     *
     * @param entrustId 委托id
     * @return
     */
    List<HfEnvEntrustTestVO> selectEntrustTestVOByEntrustId(@Param("entrustId") String entrustId);

    /**
     * 根据任务id 查询任务下试验
     *
     * @param taskId     任务id
     * @param statusList 状态
     * @return
     */
    List<HfEnvTaskTestVO> reportListVoByTaskId(@Param("taskId") String taskId
            , @Param("statusList") List<String> statusList);

    /**
     * 查询试验下委托信息
     *
     * @param id 试验id
     * @return
     */
    List<HfEnvGkEntrust> selectGkEntrustByTestId(@Param("id") String id);

    /**
     * 查询委托下试验信息
     *
     * @param taskId 任务id
     * @return
     */
    List<HfEnvEntrustTestVO> selectEntrustTestVOByTaskId(@Param("taskId") String taskId);

    /**
     * 根据试验id 查询报告渲染试验信息
     *
     * @param testIdList 试验id
     * @return
     */
    List<HfEnvTaskTestModel> listRenderModelByIds(@Param("testIdList") List<String> testIdList);

    /**
     *
     * @param queryWrapper
     * @return
     */
    List<HfEnvTestExportVO> listExportVO(@Param(Constants.WRAPPER) QueryWrapper<HfEnvTestVO> queryWrapper);
}